package com.physics.mps.module.util;

import cn.hutool.core.io.FileUtil;
import cn.hutool.core.io.IoUtil;
import cn.hutool.core.io.resource.ResourceUtil;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.Path;

/**
 * @author mcsoft
 * @date 2024/01/30 11:53
 **/
public class ScriptExtractor {

    /**
     * 新增一个静态变量来保存临时目录的路径
     */
    private static Path tempDir;

    public static Path extractScript(String scriptResourcePath) throws IOException {
        // 使用 HuTool 的 ResourceUtil 来获取资源文件流
        InputStream inputStream = ResourceUtil.getStream(scriptResourcePath);
        if (inputStream == null) {
            throw new IOException("Resource not found: " + scriptResourcePath);
        }

        // 如果临时目录不存在或已删除，则重新创建
        if (tempDir == null || !Files.exists(tempDir)) {
            tempDir = Files.createTempDirectory("scripts");
        }

        // 从资源路径获取文件名
        String fileName = new File(scriptResourcePath).getName();

        // 在临时目录中创建临时文件
        Path tempScript = tempDir.resolve(fileName);
        Files.createFile(tempScript);

        // 使用 HuTool 的 FileUtil 和 IoUtil 进行文件复制
        FileUtil.writeFromStream(inputStream, tempScript.toFile());

        // 关闭输入流
        IoUtil.close(inputStream);

        return tempScript;
    }

    /**
     * 新增一个方法来获取临时目录的路径
     */
    public static Path getTempDir() {
        return tempDir;
    }
}
